package com.gl.glcourses.services.impl;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.gl.glcourses.vos.*;
import com.gl.glcourses.vos.constants.Constants;
import com.gl.glcourses.repository.ICursosRepository;
import com.gl.glcourses.repository.IPerfilRepository;
import com.gl.glcourses.services.IPerfilServices;

@Service
@RemotingDestination(channels = { "my-amf" })
@Transactional
public class PerfilServices implements IPerfilServices{

	@Autowired
	ICursosRepository repoCurso;
	@Autowired
	IPerfilRepository repoPerfiles;
	protected final Log logger = LogFactory.getLog(getClass());

	@Transactional
	@Override
	public Confirmacion agregarPerfil(Perfil perfil) throws Exception {
		Confirmacion confirmacion = new Confirmacion();
		if(perfil.getNombre().isEmpty() || perfil.getNombre().equals(null)){
			confirmacion.setEstado(Constants.CONFIRMACION_ERROR);
			confirmacion.setErrorString(Constants.PERFIL_ERROR_NOMBRE);
			return confirmacion;
		}
		

		//si devuelve null es porque no existe y puede ser creado
		if(repoPerfiles.findPerfil("nombre", perfil.getNombre()) != null){
			confirmacion.setEstado(Constants.CONFIRMACION_ERROR);
			confirmacion.setErrorString(Constants.PERFIL_ERROR_NOMBRE_REPETIDO);
			return confirmacion;
		}

		repoPerfiles.saveUpdate(perfil);
		confirmacion.setEstado(Constants.CONFIRMACION_OK);

		return confirmacion;
		}



	public Confirmacion editarPerfil(Perfil perfil)throws Exception{
		Confirmacion confirmacion = new Confirmacion();
		
		//logger.info("saveTiposCurso");
		repoPerfiles.saveUpdate(perfil);
		
		confirmacion.setEstado(Constants.CONFIRMACION_OK);
		return confirmacion;
	}

	@Override
	public Perfil buscarPerfil(Perfil perfil) throws Exception 
	{
		return (Perfil)repoPerfiles.findById(perfil.getId(), Perfil.class);
	}
	
	

	@SuppressWarnings("unchecked")
	public List<Perfil> listarPerfiles() {
		logger.info("getRecursoList");
		try {
			return repoPerfiles.getListEntity(Perfil.class);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}	

}



